using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Xml;

namespace ETUDataControls
{
    public abstract class SQLDataLayerControl
    {
        public abstract SqlDataReader ExecuteReader(string connectNewString, string spName, params object[] parameterValues);

        public abstract SqlDataReader ExecuteReader(string spName, params object[] parameterValues);

        public abstract SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters);

        public abstract int ExecuteNonQuery(string connectNewString, string spName, bool nonReturnValue, params object[] parameterValues);
        
        public abstract int ExecuteNonQuery(string spName, bool nonReturnValue, params object[] parameterValues);

        public abstract int ExecuteNonQuery(string connectString, CommandType commandType, string commandText, params SqlParameter[] commandParameters);

        public abstract DataSet ExecuteDataSet(string connectNewString, string spName, params object[] parameterValues);
        
        public abstract DataSet ExecuteDataSet(string spName, params object[] parameterValues);

        public abstract DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters);

        public abstract System.Data.DataTable GetTable(System.Data.SqlClient.SqlDataReader _reader);

        public abstract System.Data.DataTable GetTable(string rawSQLQuery);
        public abstract System.Data.DataTable GetTable(string connectString, string rawSQLQuery);
        public abstract void ServeSQLStatements(string rawSQLQuery);
        
        public abstract object[] ExecuteSQLNonQueryWithOutput(string spName, params object[] parameterValues);

        public abstract object[] ExecuteSQLNonQueryWithOutput(string connectNewString, string spName, params object[] parameterValues);
        
        
    }
}

